package packageModel;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.ArrayList;

/**
 *
 * @author Lionel & Julien
 */
public class Syllabus implements Serializable {
    
    /*
     * SYLLABUS : 
     */
    
    /*
     * VARIABLE
     */
    
    private int syllabusId;
    private String libelle;
    private int nbPage;
    private double prix;
    private String description;
    private Langue langue;
    private Auteur auteur;
    private Categorie categorie;
    private ArrayList<String> tabMotsClefs = new ArrayList<String>();
    private Promotion reduction;
    
    
    /*
     * CONSTRUCTEUR
     */
    
    /**
     * 
     * @param syllabusId
     * @param libelle
     * @param nbPage
     * @param prix
     * @param description
     */
    public Syllabus(int syllabusId, String libelle, int nbPage, double prix, String description) {
        this.syllabusId = syllabusId;
        this.libelle = libelle;
        this.nbPage = nbPage;
        this.prix = prix;
        this.description = description;
    }

    /**
     * 
     * @param syllabusId
     * @param libelle
     * @param nbPage
     * @param prix
     * @param description
     * @param categorie
     */
    public Syllabus(int syllabusId, String libelle, int nbPage, double prix, String description, 
            Categorie categorie) {
        this.syllabusId = syllabusId;
        this.libelle = libelle;
        this.nbPage = nbPage;
        this.prix = prix;
        this.description = description;
        this.categorie = categorie;
    }
    
    /**
     * 
     * @param syllabusId
     * @param libelle
     * @param nbPage
     * @param prix
     * @param description
     * @param categorie
     * @param langue
     */
    public Syllabus(int syllabusId, String libelle, int nbPage, double prix, String description, 
            Categorie categorie, 
            Langue langue) {
        this.syllabusId = syllabusId;
        this.libelle = libelle;
        this.nbPage = nbPage;
        this.prix = prix;
        this.description = description;
        this.categorie = categorie;
        this.langue = langue;
    }
    
    /**
     * 
     * @param syllabusId
     * @param libelle
     * @param nbPage
     * @param prix
     * @param description
     * @param langue
     * @param auteur
     * @param categorie
     */
    public Syllabus(int syllabusId, String libelle, int nbPage, double prix, String description, 
            Langue langue, 
            Auteur auteur, 
            Categorie categorie) {
        this.syllabusId = syllabusId;
        this.libelle = libelle;
        this.nbPage = nbPage;
        this.prix = prix;
        this.description = description;
        this.langue = langue;
        this.auteur = auteur;
        this.categorie = categorie;
    }
    
    /**
     * 
     * @param syllabusId
     * @param libelle
     * @param nbPage
     * @param prix
     * @param description
     * @param langue
     * @param auteur
     * @param categorie
     * @param reduction
     */
    public Syllabus(int syllabusId, String libelle, int nbPage, double prix, String description, 
            Langue langue, 
            Auteur auteur, 
            Categorie categorie, 
            Promotion reduction) {
        this.syllabusId = syllabusId;
        this.libelle = libelle;
        this.nbPage = nbPage;
        this.prix = prix;
        this.description = description;
        this.langue = langue;
        this.auteur = auteur;
        this.categorie = categorie;
        this.reduction = reduction;
    }
    
    /*
     * GET
     */
    
    /**
     * 
     * @return syllabusId
     */
    public int getSyllabusId() { return syllabusId; }
    /**
     * 
     * @return libelle
     */
    public String getLibelle() { return libelle; }
    /**
     * 
     * @return nbPage
     */
    public int getNbPage() { return nbPage; }
    /**
     * 
     * @return prix
     */
    public double getPrix() { 
        BigDecimal bd = new BigDecimal(prix);
        bd = bd.setScale(2,BigDecimal.ROUND_HALF_UP);
        prix = bd.doubleValue();
        return prix; 
    }
    /**
     * 
     * @return description
     */
    public String getDescription() { return description; }
    /**
     * 
     * @return langue
     */
    public Langue getLangue() { return langue; }
    /**
     * 
     * @return auteur
     */
    public Auteur getAuteur() { return auteur; }
    /**
     * 
     * @return categorie
     */
    public Categorie getCategorie() { return categorie; }
    /**
     * 
     * @return reduction
     */
    public Promotion getReduction() { return reduction; }
    /**
     * 
     * @return tabMotsClefs
     */
    public ArrayList<String> getMotsClefs() { return tabMotsClefs; }
    
    /*
     * SET
     */
    
    /**
     * 
     * @param syllabusId
     */
    public void setSyllabusId(int syllabusId) { this.syllabusId = syllabusId; }
    /**
     * 
     * @param libelle
     */
    public void setLibelle(String libelle) { this.libelle = libelle; }
    /**
     * 
     * @param nbPage
     */
    public void setNbPage(int nbPage) { this.nbPage = nbPage; }
    /**
     * 
     * @param prix
     */
    public void setPrix(double prix) { 
        BigDecimal bd = new BigDecimal(prix);
        bd = bd.setScale(2,BigDecimal.ROUND_HALF_UP);
        prix = bd.doubleValue();
        this.prix = prix; 
    }
    /**
     * 
     * @param description
     */
    public void setDescription(String description) { this.description = description; }
    /**
     * 
     * @param langue
     */
    public void setLangue(Langue langue) { this.langue = langue; }
    /**
     * 
     * @param auteur
     */
    public void setAuteur(Auteur auteur) { this.auteur = auteur; }
    /**
     * 
     * @param categorie
     */
    public void setCategorie(Categorie categorie) { this.categorie = categorie; }
    /**
     * 
     * @param reduction
     */
    public void setReduction(Promotion reduction) { this.reduction = reduction; }
    /**
     * 
     * @param mot
     */
    public void setMotsClefs(String mot) { tabMotsClefs.add(mot); }
    
}
